//
//  CDAFNClient.h
//  myCoding
//
//  Created by Zhan Yu on 16/1/6.
//  Copyright © 2016年 Coding. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "AFNetworking.h"

typedef NS_ENUM(NSUInteger,NetworkMethod)
{
    Get = 0,
    Post,
    Put,
    Delete
};

typedef NS_ENUM(NSInteger, IllegalContentType)
{
    IllegalContentTypeTweet = 0,
    IllegalContentTypeTopic,
    IllegalContentTypeProject,
    IllegalContentTypeWebsite
};

@interface CDAFNClient : AFHTTPSessionManager/*AFNetworking:
分为NSURLConnection和NSURLSession两大板块，功能基本相似。但是  NSURLSession是发展趋势。
AFURLSessionManager是基于
NSURLSessionConfiguration(IOS 7.0+, MAC OX10_9+)的.是AFNetworking2.0以后的新特性*/

/**
 *  分享 JSON请求委托
 *
 *  @return
 */
+ (CDAFNClient *)sharedJsonClient;
/**
 *  改变 JSON请求委托
 *
 *  @return
 */
+ (id)changeJsonClient;
/**
 *  数据请求API（不带显示结果）
 *
 *  @param aPath  请求地址
 *  @param params 请求参数
 *  @param method 请求方式
 *  @param block  请求回调
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                     withParams:(NSDictionary*)params
                 withMethodType:(NetworkMethod)method
                       andBlock:(void (^)(id data, NSError *error))block;
/**
 *  数据请求API（带显示结果）
 *
 *  @param aPath         请求地址
 *  @param params        请求参数
 *  @param method        请求方式
 *  @param autoShowError 是否显示错误信息
 *  @param block         请求回调
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                     withParams:(NSDictionary*)params
                 withMethodType:(NetworkMethod)method
                  autoShowError:(BOOL)autoShowError
                       andBlock:(void (^)(id data, NSError *error))block;
/**
 *  文件请求API
 *
 *  @param aPath  请求地址
 *  @param file   请求文件名
 *  @param params 请求参数
 *  @param method 请求方式
 *  @param block  请求回调
 */
- (void)requestJsonDataWithPath:(NSString *)aPath
                           file:(NSDictionary *)file
                     withParams:(NSDictionary*)params
                 withMethodType:(NetworkMethod)method
                       andBlock:(void (^)(id data, NSError *error))block;
/**
 *  非法内容报告
 *
 *  @param type   IllegalContentType
 *  @param params 请求非法信息参数
 */
- (void)reportIllegalContentWithType:(IllegalContentType)type withParams:(NSDictionary*)params;
/**
 *  下载图片请求API
 *
 *  @param image    下载的图片
 *  @param path     下载的地址
 *  @param name
 *  @param success  成功的回调
 *  @param failure  失败的回调
 *  @param progress 下载进度的回调
 */
- (void)uploadImage:(UIImage *)image path:(NSString *)path name:(NSString *)name params:(id)pramaDic
       successBlock:(void (^)(NSURLSessionTask *operation, id responseObject))success
       failureBlock:(void (^)(NSURLSessionTask *operation, NSError *error))failure
      progerssBlock:(void (^)(CGFloat progressValue))progress;
/**
 *  下载声音请求API
 *
 *  @param file   下载文件名
 *  @param path   下载地址
 *  @param params 请求参数
 *  @param block  请求回调
 */
- (void)uploadVoice:(NSString *)file
           withPath:(NSString *)path
         withParams:(NSDictionary*)params
           andBlock:(void (^)(id data, NSError *error))block;

@end

